The problem of software piracy is well known in the computer industry. This problem results in substantial losses for software developers. Many methods have been used to try to prevent unauthorized use of software over the years, with limited success. Typically, the effort put out to break protection schemes is proportional to the value of the protected software. Thus, if a software program has high demand, such as a computer game, or has a high cost per unit, such as a professional tool sold to a small market, it is likely to be attacked by software hackers for the purpose of creating an unprotected version of the product. This unprotected version is then made available to others at low cost or free via the internet or other means.
The impact on developers is substantial. In fact, this problem is so severe in some industries, such as the music recording industry and computer games industry, that some companies are unable to guarantee the profitability of developing new software.
Some of the methods of protecting software has included an external hardware device, which is plugged into the computer. This device is interrogated by the protected software for the purpose of authorizing the use of the software. Unfortunately, it is all too easy to analyze the software and provide a software bypass around the code which requests the authorization. More complex schemes have been used to obscure the authorization process and protection scheme in an attempt to increase the difficulty of breaking the protection.
If the authorization system used by the external hardware device is simple enough and the communication packets always contain the same information, a substitute device can easily be created and provided inexpensively.
In the music industry, co-processor cards are used, along with the host processor, to provide complex effects and sound processing via plug-in co-processor software modules. Such co-processor cards can also be used for other purposes. Because the co-processor instruction sets are difficult and very complex, the number of people capable of programming the co-processor cards is limited. Also, the potential market is small. The result is that the cost of co-processor software plug-in modules is high. Unfortunately, the high cost of the modules has resulted in a high percentage of unauthorized copies of the plug-in modules being used, and insufficient development cost recovery for the developers. This has led to a reduction of new co-processor plug-in modules, and hence reduced the value of the co-processor plug-in cards.
What is needed is a more secure method of authorization which makes it difficult to bypass the authorization process or create substitute authorization devices, and which can be used either on a host processor or on an attached co-processor. The present invention addresses such a need.